Library-Based Choreographic Programming

Seminar, Project

Choreographic programming promises to simplify the development of concurrent and distributed programs. In choreographic programming, instead of writing a separate program for every participant in a distributed system, the programmer describes the behavior of the entire distributed system as a single, unified program -- a choreography -- which is then compiled to individual programs that run on each node, via a compilation step called endpoint projection. This eliminates common programming errors, such as deadlocks, and unifies an otherwise disjointed set of programs programs.

Seminar: Choral

In the seminar you will explore the Choral language. Choral is an object-oriented language that compiles into Java programs. Your paper should answer the questions:

Project

Traditional approaches use a compiler to project choreographies onto different roles, the so-called 'endpoint projection'. More recent approaches promise to achieve the same static guarantees without a compilation step, by moving the endpoint projection into a software library at runtime. So far, however, only small toy examples using this technique have been presented. In this project you will develop software for a non-trivial use case using ChorLean, a choreography library written in Lean. A possible project idea is to develop an IRC-based chat system, based on an existing implementation in the compiled language Choral, but you can also bring in your own ideas.

You will evaluate the challenges of writing "real" software using library-based choreographies and compare them to compiled languages such as Choral, as well as developing standalone applications.

Pointers